package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.PcrKzy;
import com.zhijian.medical.entity.vo.request.PcrKzySearchVo;
import com.zhijian.medical.entity.vo.response.PcrKzyVo;
import com.zhijian.medical.entity.vo.response.PcrOfKzyVo;
import com.zhijian.medical.util.Page;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 荧光PCR-核酸扩增一区-扩增仪数据 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-08-31 10:10:14
 */
public interface PcrKzyService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    PcrKzy selectById(Long id);

    /**
     * 根据实验id与设备id查找
     *
     * @param pcrId
     * @param deviceId
     * @return
     */
    PcrKzy selectByPcrIdAndDeviceId(Long pcrId, Long deviceId);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    PcrKzyVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据实验id进行删除
     *
     * @param pcrId
     */
    void deleteByPcrId(Long pcrId);

    /**
     * 新增
     *
     * @param pcrKzy
     * @return
     */
    Long insert(PcrKzy pcrKzy);

    /**
     * 更改
     *
     * @param pcrKzy
     * @return
     */
    boolean update(PcrKzy pcrKzy);

    /**
     * 总数
     *
     * @param pcrKzySearchVo
     * @return
     */
    Integer count(PcrKzySearchVo pcrKzySearchVo);

    /**
     * 列表
     *
     * @param pcrKzySearchVo
     * @return
     */
    List<PcrKzyVo> selectList(PcrKzySearchVo pcrKzySearchVo);

    /**
     * 分页查询
     *
     * @param pcrKzySearchVo
     * @return
     */
    Page<PcrKzyVo> selectPage(PcrKzySearchVo pcrKzySearchVo);

    /**
     * 导入Excel
     *
     * @param pcrId
     * @param deviceId
     * @param file
     * @return
     */
    boolean importExcel(Long pcrId, Long deviceId, MultipartFile file);

    /**
     * 根据荧光PCR实验流程id组装所有扩增仪模块的数据
     *
     * @param pcrId
     * @return
     */
    List<PcrOfKzyVo> selectPcrOfKzyVoByPcrId(Long pcrId);
}